/*
 * Copyright (C) 2012 nutmotion <simonotmanuel@gmail.com>
 * Originally released under the tradeUplan project (wiki is at Expression project.wiki is undefined on line 5, column 85 in Templates/Licenses/license-gpl30.txt.)
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.nutmotion.jsf.converter;

import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;

/**
 *
 * @author nutmotion <simonotmanuel@gmail.com>
 */
//@FacesConverter(value="signalConverter")
public class ListConverter<T> {
    private List<T> elements;    
    private Map<Integer, T> items;
    
//    protected T findById(List<T> listToTraverse, Integer id) {
//        T foundElement = null;
//        for (T e : getElements()) {
//            if (e.getId().compareTo(id)==0) {
//                foundElement=e;
//                break;
//            }                
//        }
//        return foundElement;
//    }
    
    public ListConverter(List<T> items) {
        this.items = new LinkedHashMap<Integer, T>();
        
        for (T item : items) {
            this.items.put(item.hashCode(), item);
        }
    }
    
    public Object getAsObject(FacesContext fc, UIComponent uic, String string) {                      
        Object o = null;
        if (string.compareTo("")!=0) {
            o = items.get(new Integer(string));
        }
        
        return o;
    }

    public String getAsString(FacesContext fc, UIComponent uic, Object o) {
        String stringRepresentation="";
        if (o!=null) {
            stringRepresentation = String.valueOf(o.hashCode());
        }
        return stringRepresentation;
    }    
}
